package com.gxa.xiaoucomeshome.service;



import com.gxa.xiaoucomeshome.pojo.Materials;
import com.gxa.xiaoucomeshome.vo.*;
import com.gxa.xiaoucomeshome.pojo.Address;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;


import javax.swing.text.MaskFormatter;
import java.util.Date;
import java.util.List;

public interface UserManagerService {

    List<UserManagerVo> selectAllByPage();

    /**
     * 模糊查询用户信息
     * @param page
     * @param size
     * @param name (包含用户姓名和手机)
     * @param state
     * @param site_id
     * @return
     */
    List<UserManagerVo> selectAllByNameAndPhone(Integer page, Integer size,
                                                String name,Integer state,
                                                Integer site_id);


    Integer selectUserManageCount(String name,Integer state, Integer site_id);

    /**
     * 查询用户基本信息
     * @param id
     * @return
     */
    List<UserManagerVo> selectManagerById(Integer id);
//    Integer updateUserState(Integer id);
//    Integer updateOutSate(Integer id);

    /**
     * 冻结所选用户
     * @param id
     * @return
     */
    Integer updateALlState(Integer id);

    /**
     * 解冻
     * @param id
     * @return
     */
    Integer updateOutALlState(Integer id);

    /**
     * 查询用户所有地址
     * @param id
     * @return
     */
    List<Address> selectUserAddress(Integer id);

    /**
     * 查询用户所有订单详情
     */
    List<UserOrderDetailVo> selectUserOrder(Integer page,
                                            Integer size,
                                            Integer id);
    //用户订单总条数
    Integer selectUserCount(Integer id);
    /**
     * 昵称，收货人，收货人电话，配送员进行模糊查询用户订单详情
     * @return
     */
    List<UserOrderDetailVo> selectUserByNameAndPhone( Integer page,
                                                      Integer size,
                                                      String all,
                                                      Integer state,
                                                      Integer site_id,
                                                      Date startdispatch_time,
                                                      Date enddispatch_time);

    Integer selectByNameCount(String all,
                              Integer state,
                              Integer site_id,
                              Date startdispatch_time,
                              Date enddispatch_time);
    /**
     //    int deleteUserManagerByOrderId(String order_id);
     /**
     * 查询所有订单用户导出
     * @return
     */
    List<UserOrderDetailVo> selectAllOrder();

    /**
     * 批量删除用户订单信息
     * @param order_id
     * @return
     */
    int deleteUserManagerByOrderIdAll(String[] order_id);

    int deleteUser(String order_id);

    /**
     * 查询订单详情
     * @param order_id
     * @return
     */
    List<UserOrderDetailUpdateVo> selectUserOrderDetailAll(String order_id);

    /**
     * 查询物料详情
     * @param page
     * @param size
     * @param materials_name
     * @param site_id
     * @return
     */
    List<MaterialsVo> selectMaterialsAll(Integer page,
                                         Integer size,
                                         String materials_name,
                                         Integer site_id);
    //物料总数
    Integer selectMaterialsCount( @Param("materials_name") String materials_name,
                                  @Param("site_id") Integer site_id);
    /**
     * 删除物料
     * @return
     */
    int deleteMaterials(Integer materials_id);

    /**
     * 添加物料
     */
    void insertMaterials(Materials materials);

    /**
     * 修改物料信息
     * @param materials
     */
    void updateMaterials(Materials materials);

    /**
     * 物料编辑接口
     */
    List<MaterialsVo>  editMaterials(Integer materials_id);


    /**
     * 操作员编辑接口
     * @param admin_id
     * @return
     */
    List<AdminRoleVo> editAdminRoleVo(Integer admin_id);

    /**
     * 角色编辑接口
     * @param role_id
     * @return
     */
    List<RoleVo> editRoleVo(Integer role_id);
}
